#!/usr/bin/node

const user = {
    name: 'John Doe',
    age: 25,
    qq: '123456789'
  };
  
  // 定义一个层次较深的对象
  const deepObject = {
    level1: {
      level2: {
        level3: {
          name: 'Deep Object',
          value: 42
        }
      }
    }
  };
  
  // 1. 使用六种占位符分别输出四种变量类型
  
  console.log('Name: %s', user.name); // 字符串
  console.log('Age: %d', user.age); // 整数
  console.log('Age (Hex): %x', user.age); // 整数（十六进制）
  console.log('QQ: %s', user.qq); // 字符串
  console.log('Float example: %f', 3.14159); // 浮点数
  console.log('User object: %j', user); // 对象（JSON 格式）
  console.log('User object (inspect): %o', user); // 对象（对象输出）
  
  // 2. 使用四种不同的方式输出字符串信息
  
  console.info('Info: 输出信息 using console.info');
  console.warn('Warning: 输出警告 using console.warn');
  console.error('Error: 输出错误 using console.error');
  console.log('Log: 使用 console.log 输出普通信息');
  
  // 3. 用 console.dir 输出对象和对象数组
  
  console.dir(user); // 输出对象
  console.dir([user, user]); // 输出对象数组
  
  // 4. 输出层次较深的对象
  
  console.dir(deepObject, { depth: null }); // 输出整个深层对象
  
  // 5. 使用 console.table 输出对象和对象数组
  
  console.table(user); // 输出单个对象
  console.table([user, user]); // 输出对象数组
  
  // 6. 使用 console.table 输出对象数组的某些字段
  
  console.table([user, user], ['name', 'qq']); // 仅显示 'name' 和 'qq' 字段
  
  // 7. 向标准错误流中输出信息
  console.error('Error: something wrong!');